package com.cskaoyan.javase.oop2._0encapsulate._1basic;

/**
 * 注意事项:
 *
 * 1.Getter/Setter方法的写法显然十分固定
 *  可以直接使用快捷键Alt + Insert快速生成。
 *
 * 2.成员变量的访问权限应该尽量收紧，尽量私有化，当然有必要时也可以给外界权限直接访问。
 * getter/setter方法可以根据实际情况,来决定是否定义
 * 不要一股脑全部定义.
 *
 * 3.布尔类型变量的getter/setter方法,格式比较独特
 *  建议不要将布尔类型成员变量 定义为isXxx的形式
 *
 * 4.静态成员变量，如果也需要Getter/Setter方法，需要注意其Getter/Setter方法也要是静态的。（当然，静态变量写Getter/Setter方法是很少见的）
 *
 * @since 11:58
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}

class Student {
    /*
        性别的成员变量
        建议使用String gender
        不建议用布尔类似的isMale
     */
    private boolean isMale;
    private boolean flag;

    private String name;
    private int age;

    private static int num;

    public static int getNum() {
        return num;
    }

    public static void setNum(int num) {
        Student.num = num;
    }

    /*
            布尔类型变量的getter/setter方法,格式比较独特
            一旦该布尔类型成员变量本身就叫isXxx
            这时就会导致误判成员变量的名字
            这在有些情况下就会引发错误
         */
    public boolean isMale() {
        return isMale;
    }

    public void setMale(boolean male) {
        isMale = male;
    }

    public boolean isFlag() {
        return flag;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }

    /*
        实际开发中根据具体情况
        提供getter/setter方法
        不建议无脑全部写

        getter/setter方法的书写建议自动生成
     */

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}